'''
Created on 2017年5月10日

@author: zhangyanfeng
'''

'''
Python3 函数
函数是组织好的，可重复使用的，用来实现单一，或相关联功能的代码段。
函数能提高应用的模块性，和代码的重复利用率。你已经知道Python提供了许多内建函数，比如print()。但你也可以自己创建函数，这被叫做用户自定义函数。

定义一个函数
你可以定义一个由自己想要功能的函数，以下是简单的规则：
    函数代码块以 def 关键词开头，后接函数标识符名称和圆括号 ()。
    任何传入参数和自变量必须放在圆括号中间，圆括号之间可以用于定义参数。
    函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    函数内容以冒号起始，并且缩进。
  return [表达式] 结束函数，选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

语法
Python 定义函数使用 def 关键字，一般格式如下：
    def 函数名（参数列表）:
                    函数体
                    
默认情况下，参数值和参数名称是按函数声明中定义的的顺序匹配起来的。
'''
'''
参数
以下是调用函数时可使用的正式参数类型：
必需参数
关键字参数
默认参数
不定长参数
必需参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用printme()函数，你必须传入一个参数，不然会出现语法错误：
'''

#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str,"必需参数");
   return;
 
#调用printme函数
printme("你好");

'''
关键字参数
关键字参数和函数调用关系紧密，函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致，因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名：
'''
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str,"关键字参数");
   return;
 
#调用printme函数
printme( str = "菜鸟教程");


'''
以下实例中演示了函数参数的使用不需要使用指定顺序：
'''
 
#可写函数说明
def printinfo( name, age ):
   "打印任何传入的字符串"
   print ("名字: ", name,"无序参数");
   print ("年龄: ", age,"无序参数");
   return;
 
#调用printinfo函数
printinfo( age=50, name="runoob" );

'''
默认参数
调用函数时，如果没有传递参数，则会使用默认参数。以下实例中如果没有传入 age 参数，则使用默认值：
'''
def printinfo(name,age=30):
    print('名字:',name,'默认参数')
    print('年龄:',age,'默认参数')
    
printinfo("张三", 23);
printinfo("张三");

'''
不定长参数
'''
def printinfo(arg1,*parms):
    print(arg1)
    for x in parms:
        print(x,end=',')
        

printinfo("张三");
printinfo(1,2,3,4);








